NAS支持的NFS协议版本、NFSv3和NFSv4协议的功能差异及NFS一致性

您所在的位置:网站首页 nas nfs协议读取慢 NAS支持的NFS协议版本、NFSv3和NFSv4协议的功能差异及NFS一致性

NAS支持的NFS协议版本、NFSv3和NFSv4协议的功能差异及NFS一致性

2024-07-02 16:01| 来源: 网络整理| 查看: 265

NFS Cache应用

在传统云盘中,所有的数据都会被缓存在PageCache中,修改过的Page会被异步刷回服务端,所以云盘的延时都比较低。但在NFS文件系统中,NFS不会将新创建的文件或者新写入的内容缓存在PageCache中,而是尽快刷回NAS服务端。因此,当多个ECS共享一个NFS协议文件系统时,NAS所有的操作都会比云盘多一次网络调用开销,这个开销一般在100us ~ 1ms之间。其中,尽快刷回NAS服务端,则涉及NAS所提供的如下多节点一致性模型:

基于超时的最终一致性NFS会缓存目录或者文件的属性(FileAttr),操作系统会根据FileAttr是否发生变化,来判断这个目录或者文件是否在其他ECS被修改过。同时,加载FileAttr后,操作系统在T时间内,会认为Cache(例如,文件的内容、目录下的文件列表)有效;超过T时间后,会去服务端重新获取一次FileAttr,如果FileAttr未发生变化,操作系统会认为与此文件相关的Cache全部还是有效的。说明 T为自适应的值。默认值:1s~60s。文件内容Cache:指缓存了这个文件的内容。目录子项Cache:缓存了这个目录下存在哪些文件、不存在哪些文件。文件内容Cache示例:ECS-1读取了文件X的0~4K:第一次读,cache不命中,访问服务器,读取数据,并缓存在本地。ECS-2更新了文件X的0~4K:数据写到服务端,更新FileAttr中的mtime。ECS-1再次读文件X的0~4K:第二次读,如果时间距离第一次小于T,由于FileAttr还没有过期,因此,直接使用缓存中的0~4K。ECS-1再次读文件X的0~4K:第三次读,如果时间距离第一次大于T,则去访问服务端,获取新的FileAttr,然后发现mtime变了,因此丢弃cache中的数据,去服务端读。目录子项Cache示例:ECS-1尝试查找/a:第一次查找,发现a不存在,于是在目录/下缓存一个a不存在的信息。ECS-2创建文件/a。ECS-1再次查找/a:第二次查找,由于时间小于T,直接使用cache,然后向用户报错文件不存在。ECS-1 再次访问/a:第三次查找,由于时间大于T,访问服务端,获取目录/最新的FileAttr,发现mtime有变化,则丢弃cache中的数据,去服务端查询/a。

更多有关NFS超时的最终一致性模型内容,请参见NFS。

基于文件close/open的CTO一致性

由于超时的最终一致性无法保证ECS-2可以立刻读ECS-1写入的数据。因此,为了提升一致性,NFS还提供了基于文件的CTO(close-to-open)一致性保证,即当两个及以上计算节点同时读写相同的文件时,ECS-1的修改在ECS-2不一定能立即看到。但是,一旦ECS-1打开一个文件,写入若干数据,然后执行了文件关闭操作,之后在任何一个计算节点重新打开该文件都可以保证能访问到新写入的数据。

例如,生产者ECS生产了文件X,生产完毕后执行了close。然后给消息队列发一条消息说,文件X生产完毕。消费者ECS订阅消息队列,读到消息X(文件X生产完毕),此时,消费者ECS再去open这个文件,通过open返回的fd去读取这个文件,则一定能够读到文件X的所有内容。如果消费者ECS在生产者ECS生产完毕之前,就open了文件X,并且持有了fd,当收到消息后,直接用这个fd去读,是不保证能够读取到最新数据的。

关于解决文件创建或写入延迟的解决方案,请参见如何解决在NFS文件系统中创建文件延迟问题?和如何解决向NFS文件系统中写入数据延迟问题?。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3